#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <string>
using namespace std;
class ThreadData
{
public:
    ThreadData() {}
    ThreadData(const string name, const int a, const int b)
        : _name(name),
          _a(a),
          _b(b)
    {
    }
    void Init(const string name, const int a, const int b)
    {
        _name = name, _a = a, _b = b;
    }
    void Execut()
    {
        _result = _a + _b;
    }
    int Result()
    {
        return _result;
    }
    std::string Name()
    {
        return _name;
    }

private:
    string _name;
    int _a, _b, _result;
};
string ToHex(pthread_t id)
{
    char buff[64];
    snprintf(buff, sizeof buff, "%x", id);
    return buff;
}
__thread int a=100;
// void *run(void *argv)
// {
//     ThreadData *td = static_cast<ThreadData *>(argv);
//     td->Execut();
//     return argv;
// }
void *run(void*){
    while(true){
    a++;
    cout<<a<<"新线程a的地址是"<<&a<<endl;
    sleep(1);
    }
}
int main()
{
    pthread_t tid;
    pthread_create(&tid,nullptr,run,(void*)"thread-1");
    while(true){
        sleep(1);
        cout<<a<<"main线程a的地址是"<<&a<<endl;
    }
}
// int main(){
//     pthread_t tid1;
//     ThreadData td[NUM];
//     for(int i=0;i<NUM;i++){
//         char buff[64];
//         snprintf(buff,sizeof buff,"thread-%d",i);
//         td[i].Init(buff,i,i+1);
//     }
//     for(int i=0;i<NUM;i++)
//     {pthread_create(&tid1,nullptr,run,(void*)&td[i]);
//     ThreadData* n=nullptr;
//     pthread_join(tid1,(void**)&n);
//     cout<<n->Result()<<"ovre"<<endl;
//     }
// }
// int main(){
//     pthread_t tid1;
//     pthread_t tid2;
//     pthread_t tid3;
//     pthread_t tid4;
//     pthread_create(&tid1,nullptr,run,(void*)"thread_1");
//     pthread_create(&tid2,nullptr,run,(void*)"thread_2");
//     pthread_create(&tid3,nullptr,run,(void*)"thread_3");
//     pthread_create(&tid4,nullptr,run,(void*)"thread_4");
//     int n=3;
//     while(n--)
//     sleep(1);
// //   int n=pthread_join(tid1,nullptr);
// //    cout<<"回收成功 "<<n<<endl;
//     // while(true){
//     //     sleep(1);
//     //     cout<<"main thread pid"<<getpid()<<endl;
//     // }
//     return 0;
// }